Apache Ivy একটি ডিপেনডেন্সি ম্যানেজমেন্ট টুল যা Apache Ant এর সাথে কাজ করে এবং এটি আপনার প্রোজেক্টে ব্যবহৃত লাইব্রেরি এবং ডিপেনডেন্সিগুলি সহজে ম্যানেজ করতে সহায়তা করে। Ivy ডিপেনডেন্সি ম্যানেজমেন্টের জন্য ivy.xml
ফাইল ব্যবহার করে, যেখানে আপনি আপনার প্রোজেক্টের জন্য প্রয়োজনীয় ডিপেনডেন্সিগুলি এবং তাদের ভার্সন সংজ্ঞায়িত করতে পারেন।
এই নিবন্ধে, আমরা Ivy Dependencies কীভাবে ডিফাইন করবেন এবং কিভাবে আপনার ivy.xml
ফাইলের মাধ্যমে বিভিন্ন ডিপেনডেন্সি ম্যানেজ করবেন, তা নিয়ে আলোচনা করবো।
ivy.xml
ফাইলটি Ivy-এর ডিপেনডেন্সি ম্যানেজমেন্টের জন্য মূল কনফিগারেশন ফাইল। এখানে আপনি আপনার প্রোজেক্টের জন্য প্রয়োজনীয় লাইব্রেরি বা ডিপেনডেন্সি এবং তাদের ভার্সন উল্লেখ করেন।
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0">
<info organisation="com.example" module="myapp" revision="1.0.0"/>
<dependencies>
<!-- Dependency for Apache Commons Lang -->
<dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0"/>
<!-- Dependency for JUnit -->
<dependency org="junit" name="junit" rev="4.13.2"/>
</dependencies>
</ivy-module>
এখানে:
ivy-module
: এটি ivy.xml ফাইলের মূল উপাদান। এখানে আপনি আপনার প্রোজেক্টের তথ্য (organisation, module, revision) উল্লেখ করেন।info
: এই ট্যাগে প্রোজেক্টের organisation (সংস্থা), module (প্রোজেক্ট নাম) এবং revision (ভার্সন) উল্লেখ করা হয়।dependencies
: এই ট্যাগের মধ্যে সমস্ত ডিপেনডেন্সি উল্লেখ করা হয়।dependency
: প্রতিটি লাইব্রেরি বা ডিপেনডেন্সি যা আপনার প্রোজেক্টে ব্যবহার করা হবে, তা dependency
ট্যাগের মধ্যে সংজ্ঞায়িত করা হয়।org
: ডিপেনডেন্সির সংগঠন বা গ্রুপ নাম।name
: লাইব্রেরি বা ডিপেনডেন্সির নাম।rev
: লাইব্রেরির সংস্করণ (যেমন 3.12.0
, 4.13.2
ইত্যাদি)।Ivy ডিপেনডেন্সি স্কোপ ব্যবহারের মাধ্যমে আপনি নির্ধারণ করতে পারেন কোন ডিপেনডেন্সি কিভাবে ব্যবহার করা হবে। সাধারণত, compile
, runtime
, test
, এবং provided
স্কোপ ব্যবহৃত হয়।
<dependencies>
<!-- Compile scope dependency -->
<dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0" conf="compile"/>
<!-- Runtime scope dependency -->
<dependency org="junit" name="junit" rev="4.13.2" conf="runtime"/>
</dependencies>
এখানে:
conf
: এটি ডিপেনডেন্সির স্কোপ নির্ধারণ করে (যেমন compile
, runtime
, test
, ইত্যাদি)।compile
: এই স্কোপে ডিপেনডেন্সি কোড কম্পাইলেশন এবং রUNTIME সময় উভয়েই ব্যবহৃত হবে।runtime
: এই স্কোপে ডিপেনডেন্সি শুধুমাত্র রUNTIME সময়ে প্রয়োজন, কম্পাইল সময় নয়।test
: এই স্কোপে ডিপেনডেন্সি শুধুমাত্র টেস্টিং সময় ব্যবহৃত হবে।provided
: এই স্কোপে ডিপেনডেন্সি কোড কম্পাইল এবং টেস্টিং সময় ব্যবহৃত হবে কিন্তু রানটাইম সময়ের জন্য এটি সরবরাহ করা হবে না।Transitive Dependencies হল সেই ডিপেনডেন্সি যা আপনার প্রোজেক্টের মূল ডিপেনডেন্সি দ্বারা নির্ভরশীল। Ivy এই ট্রান্সিটিভ ডিপেনডেন্সিগুলি স্বয়ংক্রিয়ভাবে ডাউনলোড করে, ফলে আপনাকে সেগুলি আলাদা করে উল্লেখ করার প্রয়োজন হয় না।
ধরা যাক, আপনার প্রোজেক্ট commons-lang3
লাইব্রেরির উপর নির্ভরশীল এবং commons-lang3
লাইব্রেরি নিজেই কিছু ট্রান্সিটিভ ডিপেনডেন্সি ব্যবহার করে।
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0"/>
</dependencies>
এটি commons-lang3
ডিপেনডেন্সিটি ডাউনলোড করবে এবং commons-lang3
লাইব্রেরি যে ডিপেনডেন্সিগুলি ব্যবহার করছে, সেগুলিও Ivy স্বয়ংক্রিয়ভাবে ডাউনলোড করবে।
Ivy আপনাকে ডাইনামিক ভার্সন রেজোলিউশন ব্যবহারের সুযোগ দেয়, যার মাধ্যমে আপনি সর্বশেষ সংস্করণ বা নির্দিষ্ট সংস্করণের মধ্যে রেজোলিউশন করতে পারেন।
<dependencies>
<!-- Use the latest available version -->
<dependency org="org.apache.commons" name="commons-lang3" rev="latest.integration"/>
<!-- Use a range of versions -->
<dependency org="junit" name="junit" rev="[4.12,4.13]"/>
</dependencies>
এখানে:
rev="latest.integration"
: এটি সর্বশেষ ইন্টিগ্রেশন সংস্করণটি ব্যবহার করবে।rev="[4.12,4.13]"
: এটি JUnit লাইব্রেরির 4.12 এবং 4.13 সংস্করণের মধ্যে যেকোন একটি ব্যবহার করবে।Ivy আপনাকে ডিপেনডেন্সির মধ্যে নির্দিষ্ট সাব-ডিপেনডেন্সি বাদ দেওয়ার সুযোগ দেয়। এর মাধ্যমে আপনি unwanted বা unnecessary ডিপেনডেন্সি রিজেক্ট করতে পারেন।
<dependencies>
<dependency org="org.apache.commons" name="commons-io" rev="2.8.0">
<exclude org="org.apache.commons" name="commons-logging"/>
</dependency>
</dependencies>
এখানে commons-logging
কে বাদ দেওয়া হয়েছে, অর্থাৎ এটি ডাউনলোড হবে না।
Ivy আপনাকে একাধিক কনফিগারেশন তৈরি এবং ব্যবহার করতে সহায়তা করে, যার মাধ্যমে আপনি নির্দিষ্ট ডিপেনডেন্সি কনফিগারেশন সিলেক্ট করতে পারেন।
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0" conf="compile, runtime"/>
</dependencies>
এটি commons-lang3
ডিপেনডেন্সি ব্যবহার করবে যা compile
এবং runtime
কনফিগারেশন উভয় ক্ষেত্রে প্রয়োজন।
Ivy ব্যবহার করে আপনি সহজেই ডিপেনডেন্সি ডিফাইন করতে পারেন এবং প্রয়োজনীয় লাইব্রেরি বা প্যাকেজ সঠিক ভার্সনে আপনার প্রোজেক্টে অন্তর্ভুক্ত করতে পারেন। ivy.xml
ফাইলের মাধ্যমে আপনি dependency
, dependency scope
, transitive dependencies
, dynamic versioning
, exclusions
, এবং multiple configurations
সহ অন্যান্য কাস্টম সেটিংস পরিচালনা করতে পারেন। Ivy ডিপেনডেন্সি ম্যানেজমেন্ট প্রক্রিয়াকে আরও সহজ, কার্যকরী এবং নমনীয় করে তোলে।
common.read_more